(HSP3) sample5 [AVISave].hsp

sample\hspdsc\(HSP3) sample5 [AVISave].hsp » Plain Format

#include "hspdsc.as"
#include "gdi32.as"
	
	title "DirectShow キャプチャデバイス表示(AVIファイルで保存)"
	cls 4
	dsc_Init				// 初期化
	
	// デバイスリスト用の変数を初期化
	sdim devlist, dsc_GetDeviceListSize()
	// デバイスリストを変数に格納
	dsc_GetDeviceList devlist, 0
	if stat == 0 || stat == -2 : dialog "デバイスが見つかりません" : end

	// ビデオコーデックの一覧取得
	size = dsc_GetCodecListSize(0)
	sdim codeclist, size*2
	codeclist = "無圧縮\n"+codeclist
	dsc_GetCodecList codeclist, 0

	objsize 300, 20
	combox did, 100, devlist

	combox cid, 100, codeclist
	
	objsize 150,20
	button "映像をAVIに保存",*save
	button "デバイスを停止",*_stop
	button "プロパティを表示",*prop
	button "解像度プロパティを表示",*prop2
	button "プロパティ表示(自前)",*prop3

	button gosub "終了する",*exit
	onexit gosub *exit
	
	stop
	
*save
	// キャプチャ処理
	dsc_SetActiveSel 0

	// 選択されたコーデック名を取得
	notesel codeclist
	noteget codecname, cid
	if codecname == "無圧縮" {
		// 無圧縮の場合は 0 を指定
		codecname = 0
		pcodecname = varptr(codecname)
	}else{
		pcodecname = varptr(codecname)
	}
	
	dsc_Open did, 301, 0, "test.avi", codecname
	if stat < 0 : dialog "エラーが発生しました。("+stat+")",1,"DEVICE-ERROR" : stop
	gsel 0, 1

	// 解像度やフレームレートを指定できますが、デバイス依存です。
	dsc_SetDevWidth 640
	dsc_SetDevHeight 480
	dsc_SetDevFrameRate 15.0
	dsc_SetDevCapConfig
	
	dsc_Play hwnd, 160, 120, 320, 240
	if stat < 0 : dialog "エラーが発生しました。",1,"CAPTURE-ERROR" : stop
	gsel 0, 1
	
stop
*_stop
	// 停止&クローズ
	dsc_Stop
	dsc_Close
stop
*prop
	// 再生中でないと失敗します。
	dsc_FilterProp  hwnd, "Device Filter"
stop
*prop2
	// dsc_playを使う前でないとうまく実行できない為、再生中の場合は一度リセットする。
	dsc_Stop
	dsc_Close							// クローズする
	dsc_Open did, 1, 0, 1, 1				// 再度オープン
	gsel 0, 1
	dsc_DevPinProp hwnd					// ここでプロパティを表示
	dsc_Play hwnd, 160, 120, 320, 240	// 再び再生
stop

	
*exit
	dsc_Stop
	dsc_Close
end

*prop3
	// サイズとFourCCを取得します
	dialog "サイズ:"+dsc_CapW+"x"+dsc_CapH+"\nFourCC:"+dsc_FourCC+"\n"+strf("%2.2ffps",double((1.0 * 10 * 1000 * 1000) / dsc_AvgFrame))
stop